package com.jprocms.module.cms.convert.channel;

import com.jprocms.module.cms.controller.admin.channel.vo.ChannelCreateReqVO;
import com.jprocms.module.cms.controller.admin.channel.vo.ChannelUpdateReqVO;
import com.jprocms.module.cms.dal.dataobject.channel.ChannelExtDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import org.springframework.util.StringUtils;

import static com.jprocms.module.cms.constant.CmsSysConstants.SUFFIX;

/**
 * 栏目扩展配置 Convert
 *
 * @author jprocms
 */
@Mapper
public interface ChannelExtConvert {

    ChannelExtConvert INSTANCE = Mappers.getMapper(ChannelExtConvert.class);

    ChannelExtDO convert(ChannelCreateReqVO bean);

    /**
     * 去掉html模板路径的html
     *
     * @param bean
     * @return
     */
    default ChannelExtDO removeSuffixConvert(ChannelCreateReqVO bean) {
        ChannelExtDO extDO = convert(bean);
        String tplPc = extDO.getTplPc();
        if (StringUtils.endsWithIgnoreCase(tplPc, SUFFIX)) {
            tplPc = tplPc.substring(0, tplPc.lastIndexOf(SUFFIX));
        }
        extDO.setTplPc(tplPc);

        String tplMobile = extDO.getTplMobile();
        if (StringUtils.endsWithIgnoreCase(tplMobile, SUFFIX)) {
            tplMobile = tplMobile.substring(0, tplMobile.lastIndexOf(SUFFIX));
        }
        extDO.setTplMobile(tplMobile);

        String contentTplPc = extDO.getContentTplPc();
        if (StringUtils.endsWithIgnoreCase(contentTplPc, SUFFIX)) {
            contentTplPc = contentTplPc.substring(0, contentTplPc.lastIndexOf(SUFFIX));
        }
        extDO.setContentTplPc(contentTplPc);

        String contentTplMobile = extDO.getContentTplMobile();
        if (StringUtils.endsWithIgnoreCase(contentTplMobile, SUFFIX)) {
            contentTplMobile = contentTplMobile.substring(0, contentTplMobile.lastIndexOf(SUFFIX));
        }
        extDO.setContentTplMobile(contentTplMobile);
        return extDO;
    }

    ChannelExtDO convert(ChannelUpdateReqVO bean);

    default ChannelExtDO removeSuffixConvert(ChannelUpdateReqVO bean) {
        ChannelExtDO extDO = convert(bean);
        String tplPc = extDO.getTplPc();
        if (StringUtils.endsWithIgnoreCase(tplPc, SUFFIX)) {
            tplPc = tplPc.substring(0, tplPc.lastIndexOf(SUFFIX));
        }
        extDO.setTplPc(tplPc);

        String tplMobile = extDO.getTplMobile();
        if (StringUtils.endsWithIgnoreCase(tplMobile, SUFFIX)) {
            tplMobile = tplMobile.substring(0, tplMobile.lastIndexOf(SUFFIX));
        }
        extDO.setTplMobile(tplMobile);

        String contentTplPc = extDO.getContentTplPc();
        if (StringUtils.endsWithIgnoreCase(contentTplPc, SUFFIX)) {
            contentTplPc = contentTplPc.substring(0, contentTplPc.lastIndexOf(SUFFIX));
        }
        extDO.setContentTplPc(contentTplPc);

        String contentTplMobile = extDO.getContentTplMobile();
        if (StringUtils.endsWithIgnoreCase(contentTplMobile, SUFFIX)) {
            contentTplMobile = contentTplMobile.substring(0, contentTplMobile.lastIndexOf(SUFFIX));
        }
        extDO.setContentTplMobile(contentTplMobile);
        return extDO;
    }
}
